1
Fundamentos Arquitetônicos do Ecossistema HIP
AI022Lesson 3
00:00

O Ecossistema HIP é arquitetado como uma camada de abstração leve projetada para compatibilidade de código-fonte entre arquiteturas AMD e NVIDIA. Ele utiliza o ROCm (Radeon Open Compute) pilha, especificamente utilizando o Arquitetura de Sistema Heterogêneo (HSA) tempo de execução e o Driver de Fusão de Núcleos (KFD).

1. Inicialização de Arranque

A inicialização começa com trocas de mensagens de baixo nível entre drivers de kernel via hsa_init(0, ...) e hsaKmtOpenKFD(...). Essas chamadas de estabelecimento criam a ponte de comunicação entre aplicações no espaço de usuário e o hardware da GPU AMD.

2. Descoberta de Topologia e Propriedades

Antes de iniciar núcleos, o tempo de execução identifica as capacidades do hardware usando hsaKmtAcquireSystemProperties e hsaKmtGetNodeProperties. Ele mapeia a memória física para nós da GPU usando hsaKmtMapMemoryToGPUNodes, garantindo visibilidade da tabela de páginas para o dispositivo.

3. A Pipeline de Compilação

A ponte entre CUDA e HIP é construída sobre dois pilares: hipify-perl (transpilador baseado em expressões regulares) e hipcc (envoltório de compilador).

# Exemplo de Fluxo de Portabilidade
hipify-perl square.cu > square.cpp
hipcc square.cpp -o square.out

4. Lógica de Versão

A compatibilidade é garantida por meio de uma fórmula precisa para assegurar que hipRuntimeGetVersion esteja alinhado com as tabelas de extensão HSA:

$$\text{HIP\_VERSION} = \text{MAIOR} \times 10^7 + \text{MENOR} \times 10^5 + \text{CORREÇÃO}$$

Camada de Aplicação (./square.out)Camada HIP (hipcc / API de Tempo de Execução)Tempo de Execução HSA / Tabelas de ExtensãoDriver de Núcleo (KFD) & Hardware
main.py
TERMINALbash — 80x24
> Ready. Click "Run" to execute.
>